package com.decent.ejfadmin.report.dao;

import com.decent.ejfadmin.common.bean.Page;
import com.decent.ejfadmin.report.dao.provider.CollectCardUserReportDaoProvider;
import com.decent.ejfadmin.report.response.CollectCardUserReportDto;
import com.decent.ejfadmin.common.bean.SupplyCard;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author weicx
 * @date 2018/08/01
 */
@Mapper
@Repository
public interface CollectCardUserReportDao {
    /**
     * 收卡会员统计计数
     *
     * @param userAccount       会员编号/名称
     * @param startTime 查询开始时间
     * @param endTime   查询结束时间
     * @param card      查询bean
     * @return 总数
     */
    @SelectProvider(type = CollectCardUserReportDaoProvider.class, method = "collectCardUserReportCount")
    int collectCardUserReportCount(@Param("userAccount") String userAccount, @Param("startTime") String startTime, @Param("endTime") String endTime,
                                   @Param("card") SupplyCard card);

    /**
     * 收卡会员统计
     *
     * @param pageUnit  分页组件
     * @param userAccount       会员编号/名称
     * @param startTime 查询开始时间
     * @param endTime   查询结束时间
     * @param card      查询bean
     * @return list
     */
    @SelectProvider(type = CollectCardUserReportDaoProvider.class, method = "collectCardUserReportPage")
    List<CollectCardUserReportDto> collectCardUserReportPage(@Param("pageUnit") Page pageUnit, @Param("userAccount") String userAccount,
                                                             @Param("startTime") String startTime, @Param("endTime") String endTime,
                                                             @Param("card") SupplyCard card);
}
